$(function () {
    //轮播图
    var pic = 0;
    var square = 0;
    var flag = true
    var timerId = null;
    for (var i = 0; i < $(".carousel ul li").length; i++) {
        $(".carousel ol").append(" <li></li>");
    }
    $(".carousel ol li").eq(0).addClass("current");
    $(".carousel ol li").mouseenter(function () {
        $(this).addClass("current").siblings().removeClass("current");
        var index = $(this).index();
        $(".ad ul").stop().animate({left: -index * 1348 + 'px'}, 1000, function () {
            flag = true;
        });
        pic = square = index;
    });
    $(".ad").mouseenter(function () {
        $(".arr").show(600);
        clearInterval(timerId);
    });
    $(".carousel").mouseleave(function () { //这里不要用ad,会频闪
        timerId = setInterval(animateRight, 2000);
        $(".arr").hide(600);
    });
    $(".ad ul").append($(".ad ul li").eq(0).clone());
    $(".arr .right").click(function () {
        //console.log(1);
        animateRight();
    });
    $(".arr .left").click(function () {
        if (flag) {
            flag = false;
            if (pic == 0) {
                pic = $(".ad ul li").length - 1;
                $(".ad ul").css("left", -pic * 1348 + 'px');
            }
            pic--;
            $(".ad ul").stop().animate({left: -pic * 1348 + 'px'}, 1000, function () {
                flag = true;
            });
            if (square > 0) {
                square--;
            } else {
                square = $(".ad ol li").length - 1;
            }
            $(".carousel ol li").eq(square).addClass("current").siblings().removeClass("current");
        }
    });
    timerId = setInterval(animateRight, 2000);
    function animateRight() {
        if (flag) {
            flag = false;
            if (pic == $(".ad ul li").length - 1) {
                pic = 0;
                $(".ad ul").css("left", '0px');
            }
            pic++;
            $(".ad ul").stop().animate({left: -pic * 1348 + 'px'}, 1000, function () {
                flag = true;
            });
            if (square < $(".ad ol li").length - 1) {
                square++;
            } else {
                square = 0;
            }
            $(".carousel ol li").eq(square).addClass("current").siblings().removeClass("current");
        }
    }

    //国内样片标题左右抖动
    $(".titleTag").mouseenter(function () {
        //clearInterval(inlandTimer);
        $(this).stop().animate({
            left: -20
        }, 200);
        //zd($(this));
    })
        .mouseleave(function () {
        $(this).stop().animate({
            left: 0
        },200);
    });

    function zd(obj, fn) {
        //var a=['top','left'],b=0;
        var a = ['top', 'left'], b = 0;
        var u = null;
        u = setInterval(function () {
            var attr = a[b % 2];
            var target = (b++) % 4 < 2 ? 0 : 5;     //轮流执行0-5的修改，4次一圈，如果赠长时间，可以修改停止条件
            //console.log(attr + "|" + target);
            //document.getElementById('win').style[a[b%2]]=(b++)%4<2?0:4;
            obj.css(attr, target);
            //{attr:target}           //这个颜色也不对，变量不能用在json对象中的属性名，只能用于属性值
            //obj.animate(attr,target);
            //obj.animate({
            //    //attr: target
            //    attr: target        //为什么属性名不能用变量
            //},20);
            if (b > 15) {
                //if (true) {
                clearInterval(u);
                b = 0;
                fn && fn();
            }
        }, 32)
    }


    //效果比较瞎
    //inlandFade();
    //function inlandFade() {
    //    var leftRight = true;
    //    inlandTimer = setInterval(function () {
    //        leftRight && $(".inland").animate({
    //            opacity: 0.6
    //        }, 1000, function () {
    //            leftRight = false;
    //        });
    //        !leftRight && $(".inland").animate({
    //            opacity: 1
    //        }, 1000, function () {
    //            leftRight = true;
    //        });
    //    }, 1000);
    //}

    //国内样片
    //做法有问题，转变思路，鼠标只能移入一个，移入的那个处理动画1，其他执行动画2
    $(".inlandShow li").mouseenter(function () {
        $(this).find(".small").stop().animate({
            left: -360
        }, 300).next().stop().animate({         //不要用链式执行，否则会出现this指向偏差
            top: 0
        }, 300);
        //console.log(-$(".inlandShow li").height());
        $(this).siblings().find(".big").stop().animate({
            top: -$(".inlandShow li").height()
        }, 300).prev().stop().animate({
            left: 0
        }, 300);
    })
    $(".inlandShow ul").mouseleave(function () {
        $(this).children().find(".big").stop().animate({
            top: -$(".inlandShow li").height()
        }, 300).prev().animate({
            left: 0
        }, 300);
    });
    //热门景点
    $(".hotShow li").mouseenter(function () {
        $(this).find("img").stop().animate({
            opacity: 1
        }, 300);
        $(this).find("div").stop().animate({
            top: 350
        }, 300);
    }).mouseleave(function () {
        $(this).find("img").stop().animate({
            opacity: 0.8
        }, 300);
        $(this).find("div").stop().animate({
            top: 250
        }, 300);
    });

    //随机数函数
    function rnd(min, max) {
        return parseInt((Math.random() * 999) % (max - min + 1)) + min;
    }

    //var bubbleX = rnd(0,$(window).width())-160;
    //var bubbleY = rnd(0,$(window).height())-160;
    //console.log(bubbleY);
    //console.log(bubbleY < 0 ? 0 : bubbleY);
    //$(".bubble img").css({              //此时只能给所有气泡同一个位置
    //    left: bubbleX < 0 ? 0 : bubbleX,
    //    top: bubbleY < 0 ? 0 : bubbleY
    //});

    //jQuery中的隐式遍历满足不了要求，是给所有的同一个值，此时仍需要遍历执行
    var aBullet = []; //存放随机生成的位置速度
    function bubbleInitialize() {
        var imgs = $(".bubble div");
        aBullet = []    //生成之前先清空一次
        for (var i = 0; i < imgs.length; i++) {
            // 1、位置初始化
            var bubbleX = rnd(0, $(window).width()) - 160;
            var bubbleY = rnd(0, $(window).height()) - 160;
            bubbleX = bubbleX > 0 ? bubbleX : 0;
            bubbleY = bubbleY > 0 ? bubbleY : 0;
            imgs.eq(i).css({
                left: bubbleX,
                top: bubbleY
            });
            // 2、速度初始化
            //2个生成的随机数再随机选取某个，可以用±0.5随机值判断大于0来选择
            var speedX = rnd(-0.5, 0.5) > 0 ? rnd(-3, -1) : rnd(1, 3);
            var speedY = rnd(-0.5, 0.5) > 0 ? rnd(-3, -1) : rnd(1, 3);
            // 3、生的数据存成json对象在定时器中调用
            aBullet.push({
                obj: imgs.eq(i),
                bubbleX: bubbleX,
                bubbleY: bubbleY,
                speedX: speedX,
                speedY: speedY,
                //noCrash: 1, //表示未碰撞窗体
            })
        }
    }
    bubbleInitialize();
    //定时器中遍历气泡执行运动
    //imgs.eq(0).animate({
    //    left: aBullet[0].bubbleX + aBullet[0].speedX,
    //    top: aBullet[0].bubbleY + aBullet[0].speedY
    //},30,"linear");
    $(window).resize(function () {
        bubbleInitialize();     //这种函数不能再定时器或循环中执行，资源占用过大
    })
    setInterval(function () {
        for (var i = 0; i < aBullet.length; i++) {
            //屏幕碰撞检测    用短路来执行修改
            //bug 页面缩放时，位置不对
            (aBullet[i].obj.position().top < 0) && (aBullet[i].speedY *= -1);
            (aBullet[i].obj.position().top + aBullet[i].obj.height() > $(window).height()) && (aBullet[i].speedY *= -1);
            (aBullet[i].obj.position().left < 0) && (aBullet[i].speedX *= -1);
            (aBullet[i].obj.position().left + aBullet[i].obj.width() > $(window).width()) && (aBullet[i].speedX *= -1);
            aBullet[i].bubbleX += aBullet[i].speedX;
            aBullet[i].bubbleY += aBullet[i].speedY;
            //直接这样速度取反，在两个重合的时候，如果下一次没能分开，会开始抖动
            //需要一个额外的标志位，来标志上升沿     还是会抖动
            //if(aBullet[i].noCrash && crashDet(aBullet[i].obj,aBullet[i].obj.siblings())){
            //    aBullet[i].noCrash = 0;       这里隐式遍历获取的只是某一个的sibing的属性值，不可可用
            //    aBullet[i].speedX *= -1;
            //    aBullet[i].speedY *= -1;
            //}else{
            //    aBullet[i].noCrash = 1;
            //}
            var thisB = aBullet[i].obj;
            var others = aBullet[i].obj.siblings();
            //两两碰撞实现失败，会粘附
            for (var j = 0; j < aBullet.length - 1; j++) {
                //if (aBullet[i].noCrash && crashDet(aBullet[i].obj, aBullet[i].obj.siblings().eq(j))) {
                //    aBullet[i].noCrash = 0;
                //    //这里隐式遍历获取的只是某一个的sibing的属性值，不可可用
                //    aBullet[i].speedX *= -1;
                //    aBullet[i].speedY *= -1;
                //    break;
                //} else {
                //    aBullet[i].noCrash = 1;
                //}
                //不能一次该xy2个速度
                //if( !crashDet(thisB,others.eq(j))){
                //    aBullet[i].noCrash = 1;
                //}
                //if(aBullet[i].noCrash && crashDet(thisB,others.eq(j))){
                //    aBullet[i].noCrash = 0;
                //    if(thisB.position().top < others.eq(j).position().top + others.eq(j).height()){
                //        aBullet[i].speedY *= -1;
                //    }
                //    if(thisB.position().top + thisB.height() > others.eq(j).position().top){
                //        aBullet[i].speedY *= -1;
                //    }
                //    if(thisB.position().left < others.eq(j).position().left + others.eq(j).width()){
                //        aBullet[i].speedX *= -1;
                //    }
                //    if(thisB.position().left + thisB.width() > others.eq(j).position().left){
                //        aBullet[i].speedX *= -1;
                //    }
                //}
                //测试失败
            }

            aBullet[i].obj.css({
                left: aBullet[i].bubbleX,
                top: aBullet[i].bubbleY
            });
        }
    }, 30)

    //两两碰撞检测
    function crashDet(obj1, obj2) {
        var l1 = obj1.position().left;
        var r1 = obj1.position().left + obj1.width();
        var t1 = obj1.position().top;
        var b1 = obj1.position().top + obj1.height();

        var l2 = obj2.position().left;
        var r2 = obj2.position().left + obj2.width();
        var t2 = obj2.position().top;
        var b2 = obj2.position().top + obj2.height();
        // if(r1>=l2 || l1<=r2 || b1>=t2 || t1<=b2)//该条件有问题，也不能用四条件与，而是应该用非碰撞条件整体取反
        if (r1 < l2 || l1 > r2 || b1 < t2 || t1 > b2) {
            return false;
        } else {
            return true;
        }
    }

    //气泡点击放大消失
    $(".bubble div").dblclick(function () {
        var index = $(this).index();
        zd($(this).find(".bubble2"), function () {
            $(".bubble div i").eq(index).animate({
                width: 120,
                height: 120,
                marginTop: -60,
                marginLeft: -60
            }, 400, function () {
                $(this).animate({
                    width: 160,
                    height: 160,
                    marginTop: -80,
                    marginLeft: -80
                }, 300, function () {
                    $(this).animate({
                        width: 120,
                        height: 120,
                        marginTop: -60,
                        marginLeft: -60
                    }, 200, function () {
                        $(this).animate({
                            width: 200,
                            height: 200,
                            marginTop: -100,
                            marginLeft: -100
                        }, 100, function () {
                            $(".bubble div").eq(index).hide();
                        });
                    });
                });
            })
        });
    });
    //屏幕过了首屏以后再出现气泡

    $(window).scroll(function () {
        if ($(window).scrollTop() > 400) {
            ////alert(1);
            //$(".bubble div").each(function () {
            //    $(this).css({
            //        left : 100,
            //        top : 100
            //    });
            //});
            $(".bubble").css("visibility","visible");
        }
        //else {
        //    $(".bubble").css("visibility","hidden");
        //}
    })
});